Graphics display systems, such as cellular telephones, typically employ a graphics controller as an interface between one or more sources of image data and a graphics display device such as an LCD panel or panels. In a cellular telephone, the sources of image data are typically a host, such as a CPU, and a camera. The host and camera transmit image data to the graphics controller for ultimate display. The host also transmits control data to both the graphics controller and the camera to control the operation of these devices.
The graphics controller provides various processing options for processing image data. For example, the graphics controller may compress or decompress, e.g., JPEG encode or decode, incoming or outgoing image data, crop the image data, resize the image data, scale the image data, and color convert the image data according to one of a number of alternative color conversion schemes. All these image processing functions provided by the graphics controller are responsive to and may be directed by control data provided by the host.
The host also transmits control data for controlling the camera to the graphics controller, and the graphics controller, in response, programming the camera to send one or more frames of image data acquired by the camera to the graphics controller. For example, the camera is typically capable of transmitting image data for displaying a stream of ‘preview’ images as well as a stream of full frames of image data for full frame image display. A ‘preview’ image is of relatively low resolution, e.g., 160×120 or 320×240, whereas a full frame is of much higher resolution. The ‘preview’ image, being smaller, requires the transfer of less data, which is useful for conserving power.
Accordingly, after displaying images in a “preview” mode, a user may select a “full frame” mode through the use of control data transmitted to the camera by the host. The use of “preview” and “full frame” modes may correspond, respectively, to finding a desired image through a viewfinder of a manually operated camera and snapping a picture.
Image data provided by the camera are typically streamed from the camera in raster scan order, and the camera also provides the graphics controller with synchronizing signals VSYNC and HSYNC that indicate the start of a frame and the start of a row within the frame, respectively. These signals are not available to the host, however. Particularly, the host has no indication whether and when the camera has in fact changed from “preview” to “full frame” mode (or the reverse) or the progress of the transmission of a given frame, i.e., how much of the frame has been transmitted.
As a result of this lack of status information, controlling the desired image processing operations in the graphics controller can be inefficient. For example, it is typically desired to JPEG encode the full frame image obtained in “full frame” mode but not to JPEG encode the image data obtained in “preview” mode. This processing can be commenced prior to the transmission of a complete, full frame. More particularly, this processing can be commenced when a minimum number of pixels, such as an 8×8 block, have been received. However, without knowing the status of frame transmission, the host must wait to commence encoding, and more specifically to signal the graphics controller to commence encoding, until some time after a complete frame has been transmitted. Further, since the host does not know when the camera has begun to transmit a frame, the host must wait a longer time to account for a presumed “worst-case” length of time that the camera may require for transmitting the frame. Still further, the camera typically does not provide an indication that it has changed transmit mode, e.g., from “preview” to “full frame.” Therefore, the host must wait an even longer time to account for the camera's delay. Yet further, this delay is specific to the particular camera so that a “worst-case” camera delay must also be presumed to ensure proper functioning with any camera.
The same problems may exist for timing other types of processing operations. Therefore, it is a general problem in the art that the host cannot control the graphics controller as efficiently as would be desirable to process frames of image data received from a device such as a camera that is subject only to open loop control. Thence, there is a need for a method and apparatus for determining the status of frame data transmission from such an imaging device.